#include <stdio.h>
#include <windows.h>

int main()
{
  //算术操作符   +加 -减 *乘 /整除 %取余 
  printf("%d\n",6/2);
  printf("%d\n",6%2);

//移位操作符  <<左移操作符    >>右移操作符
printf("%d\n",6<<2);    //00000110  <<    0011000=24  左边抛弃，右边补0
printf("%d\n",6>>2);    //00000110  <<    00000001=1


//位操作符  &按位与   |按位或  ^按位异或
printf("%d\n",6&2);     
printf("%d\n",6|2); 
printf("%d\n",6^2);  //  0110^0010=0100=4(按位相同为0 不同为1))

//复合赋值符：+= ， -= ， *= ，/= ， %= ， >>= ， <<= ，&=， |=， ^= 。

//单目操作符  ! (逻辑反操作)，- (负值)，+ (正值)，& (取地址)， sizeof (以字节为单位的操作数的类型长度)， 
// (对一个数的二进制按位取反)， -- (前置、后置--)，++ (前置、后置++)，* (间接访问符即解引用操作符)， (类型)  (强制类型转换) 


//前置++和前置--
int a1 = 10;
int x = ++a1;
 //先对a进行自增，然后再使用a，也就是表达式的值是a自增后的值。x为11。
int y = --a1;
 //先对a进行自减，然后再使用a，也就是表达式的值是a自减后的值。y为10。
//后置++和后置--
int a = 10;
int k = ++a;
 //先使用a再对a自增，这样x的值为10，a变成11。
int j = --a;
 //先使用a再对a自减，这样y的值为11，a变成10。


//逻辑操作符
//逻辑操作符有：&&(逻辑与)，||(逻辑或)。
//区分逻辑与和按位与 区分逻辑或和按位或：1&2=0，1&&2=1； 1|2=3，1||2=1。




/*条件操作符（三目操作符）
        exp1 ? exp2 : exp3  （即若表达式exp1成立，则返回表达式exp2，若表达式exp1不成立，则返回表达式exp3）。
        如：b = (a>5) ? 3 : -3; //表示如果a>5成立，则b值为3，若a>5不成立，则b值为-3。
 */   
int c;    
printf("%d\n", c = (a>5) ? 3 : -3);



}